#pragma once

namespace terms {
	/**
	 * \brief Term visitor implementing the visitor pattern.
	 **/
	template <class Term>
	class TermVisitor {
	public:
		virtual ~TermVisitor()
		{
		}

	public:
		virtual void visitBefore(const Term &term)
		{
			(void)term;
		}

	public:	
		virtual void visit(const Term &term)
		{
			(void)term;
		}

	public:	
		virtual void visitAfter(const Term &term)
		{
			(void)term;
		}
	};
}
